<?php
/**
 *
 * @author Mr.UBKey
 * @package XPHP
 * @version Beta
 * @copyright XWEB
 */
require_once 'XPHP/View/Result/Interface.php';
require_once 'XPHP/View.php';
require_once 'XPHP/Layout.php';
require_once 'XPHP/Model.php';
class XPHP_View_Result extends XPHP_View_Result_Abstract
{	

	/**
	 * Lớp hỗ trợ HTML
	 * @var XPHP_Html
	 */
	protected $html;
	
	/**
	 * Lớp hỗ trợ URL
	 * @var XPHP_Url
	 */
	protected $url;
	
	/**
	 * Thêm biến lưu trữ Model
	 * Giống $this->_model(Tiện cho việc lập trình)
	 * Phiên bản chính thức sẽ bỏ thuộc tính này
	 */
	protected $model;
	
	/**
	 * Methods for layout
	 */
	public function content()
	{
		require_once $this->_view->getDefaultViewPath();
	}
	/* END Methods for layout */
	
	/**
	 * (non-PHPdoc)
	 * @see XPHP_View_Result_Interface::ExecuteResult()
	 */
	public function ExecuteResult()
	{
		//Gán giá trị từ $this->_model tới $this->model
		$this->model = $this->_model;
		
		//Lấy các giá trị từ view dynamic data đưa vào
		require_once 'XPHP/Reflection.php';
		$ref = new XPHP_Reflection($this->_view->getViewData());
			
		foreach ($this->_view->getViewData() as $var => $value)
			$this->$var = $value;
				
		//Lớp hỗ trợ xử lý HTML
		$this->html = new XPHP_Html($this->_view->getRouter(), $this->_view->getModel());
		//Khởi tạo lớp hỗ trợ URL
		$this->url = new XPHP_Url($this->_view->getRouter());	

		if($this->_layout->getLayoutFile() !== NULL)
		{
			//Include file layout
			require_once $this->_layout->getLayoutPath();
		}
		else
		{
			//Include file view vào
			require_once $this->_view->getDefaultViewPath();
		}
	}
}